home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / source / crosfade / crosfade.c < prev    next >
C/C++ Source or Header  |  1994-09-29  |  2KB  |  99 lines

  1. #include "alloc.h"
  2. #include "io.h"
  3. #include "fcntl.h"
  4. #include "conio.h"
  5. #include "sys/stat.h"
  6.  
  7.  
  8.  
  9.  
  10. /*The following are the prototypes for the routine sin FADE.ASM */
  11. void setPal(void far *pal);
  12. void fill_pal(void far *pal,char red,char green,char blue);
  13. void copy_pal(void far *pal,void far *pal_dest);
  14. void sub_palette(void far *pal,void far *pal_dest);
  15. void fade_between_once(void far *pal,void far *pal_dest);
  16.  
  17.  
  18. char pal[768];
  19. char pal2[768];
  20.  
  21.  
  22.  
  23. const char *image="image.raw";
  24. const char *palf1="pal1.pal";
  25. const char *palf2="pal2.pal";
  26.  
  27. int readstuff(const char *filename,void far *buf,unsigned length)
  28. {
  29.    int handle, bytes;
  30.  
  31.  
  32.    if ((handle =
  33.       sopen(filename, O_RDONLY | O_BINARY, S_IWRITE | S_IREAD)) == -1)
  34.    {
  35.       printf("Error Opening File\n");
  36.       exit(1);
  37.    }
  38.  
  39.    if ((bytes = read(handle, buf, length)) == -1) {
  40.       printf("Read Failed.\n");
  41.       exit(1);
  42.    }
  43.    return 0;
  44. }
  45.  
  46.  
  47. void fade_between_screen(void far *pal,void far *paldest)
  48. /* This routine actually morph one palette to another */
  49. {  int n;
  50.    char far *buff,*buff2;
  51.    buff=farmalloc(768*2);
  52.    buff2=farmalloc(768);
  53.    copyPal(paldest,buff2);
  54.    copyPal(pal,buff);
  55.    sub_palette(buff,buff2);
  56.    for(n=0;n<63;++n)
  57.     fade_between_once(buff,buff2);
  58.    farfree(buff2);
  59.    farfree(buff);
  60. }
  61.  
  62.  
  63.  
  64. void main()
  65. {  int n;
  66.    asm{           /* set mode 13h video mode*/
  67.      mov  ax,13h
  68.      int  10h
  69.    }
  70.  
  71.   /* read 320*200 raw image to video buffer*/
  72.  
  73.    fill_pal(&pal,0,0,0);  /* fill pal[768] with 0*/
  74.    setPal(&pal);
  75.    readstuff(image,(void far *)0xa0000000,64000);
  76.  
  77.   /*read palette file */
  78.    readstuff(palf1,&pal,768);
  79.    readstuff(palf2,&pal2,768);
  80.  
  81.    setPal(&pal);
  82.  
  83.    getch();
  84.  
  85.    fade_between_screen(&pal,&pal2);
  86.  
  87.    getch();
  88.  
  89.    fade_between_screen(&pal2,&pal);
  90.  
  91.    getch();
  92.  
  93.    asm{         /* return to text mode */
  94.      mov ax,3h
  95.      int 10h
  96.    }
  97.    printf("crosfade.exe written by Esak 1994");
  98. }
  99.